import request from '@/utils/request';
import type { BaseBeanModel, ResponsePageData, ResponseBaseData, QueryParamModel } from '@/api/model/baseModel';

const basePath = '/platform6/sysapplication/SysApplication';
const orgAppPath = '/platform6/msystem/sysapporgrelations';
/** 多应用配置表 */
export interface SysApplicationDto extends BaseBeanModel {
  /** 应用名称ID */
  id?: string;
  /** 应用名称 */
  applicationName?: string;
  /** 应用编码 */
  applicationCode?: string;
  /** 排序 */
  orderBy?: number;
  /** 应用地址 */
  basepath?: string;
  /** 状态 */
  runState?: string;
  runStateName?: string;
  /** 应用描述 */
  description?: string;
  /** 扩展字段 */
  attribute01?: string;
  /** 扩展字段 */
  attribute02?: string;
  /** 扩展字段 */
  attribute03?: string;
  /** 扩展字段 */
  attribute04?: string;
  /** 扩展字段 */
  attribute05?: string;
  /** 扩展字段 */
  attribute06?: string;
  /** 扩展字段 */
  attribute07?: string;
  /** 扩展字段 */
  attribute08?: string;
  /** 扩展字段 */
  attribute09?: string;
  /** 扩展字段 */
  attribute10?: string;
  /** 是否门户 1:是 0:否 */
  isPortal?: string;
}

/**
 * 获取分页数据
 * @param param 表格参数
 * @returns 表格数据
 */
export function listSysApplicationByPage(param: QueryParamModel): Promise<ResponsePageData<SysApplicationDto>> {
  return request.post(`${basePath}/search-by-page/v1`, param);
}

/**
 * 根据id加载数据
 * @param id 应用ID
 * @returns 应用数据
 */
export function getSysApplication(id: string): Promise<ResponseBaseData<SysApplicationDto>> {
  return request.get(`${basePath}/getSysApplicationById/${id}/v1`);
}

/**
 * 保存表单数据
 * @param form 表单数据
 * @returns 表格数据
 */
export function saveSysApplication(form: SysApplicationDto): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/insertOrUpdateSysApps/v1`, form);
}

/**
 * 根据id集合删除数据
 * @param ids 删除的应用id数组
 * @returns 表格数据
 */
export function delSysApplication(ids: [string]): Promise<ResponseBaseData<any>> {
  return request.delete(`${basePath}/delete-by-ids/v1`, { data: ids });
}

/**
 * 校验应用ID唯一性
 * @param param 应用id
 * @returns id唯一性校验结果
 */
export function checkApplicationIDUnique(param: object): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/check-id-unique/v1`, param);
}

/**
 * 校验应用编码唯一性
 * @param param 应用编码
 * @returns 编码唯一性校验结果
 */
export function checkApplicationCodeUnique(param: object): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/check-application-code-unique/v1`, param);
}

/**
 * 获取分页数据
 * @param param 表格参数
 * @returns 表格数据
 */
export function listSysOrgApplicationByPage(param: QueryParamModel): Promise<ResponsePageData<SysApplicationDto>> {
  return request.post(`${orgAppPath}/search-by-page/v1`, param);
}

/**
 * 保存应用表单数据
 * @param orgId 组织ID
 * @returns 表格数据
 */
export function saveSysOrgApplication(orgId: string, sysApplicationIds): Promise<ResponseBaseData<any>> {
  return request.post(`${orgAppPath}/insertRelation/${orgId}/v1`, sysApplicationIds);
}

/**
 * 根据id集合删除数据
 * @param ids 删除的应用id数组
 * @returns 表格数据
 */
export function delSysOrgApplication(ids: [string]): Promise<ResponseBaseData<any>> {
  return request.delete(`${orgAppPath}/delete-by-ids/v1`, { data: ids });
}
